package com.itheima.tliasmanagementspringboot.mapper;

import com.itheima.tliasmanagementspringboot.dtos.StudentPageDto;
import com.itheima.tliasmanagementspringboot.pojo.Student;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;
import java.util.Map;

@Mapper
public interface StudentMapper {
    /**
     * 功能:查询全部学员信息
     * @return 查询到的学员信息的集合
     */
    @Select("select * from student")
    List<Student> queryAllStudentMapper();

    /**
     * 功能: 根据id查询学员信息
     * @return 查询到的学员信息的集合
     *
     *
     */
    @Select("select * from student where id=#{id}")
    Student queryStudentByConditionMapper(Integer id);


    /**
     * 功能:通过学员id查询学员name
     * @param id 学员id
     * @return 返回部门下学员数量
     */
    @Select("select name from student where id=#{id}")
    String queryStudentNameById(Integer id);

    /**
     * 功能: 根据id查删除学员信息
     *
     */
    void deleteStudentByIds(Integer[] ids);

    /**
     * 功能: 添加/插入一条学员信息
     *
     * @param student
     */
    void insertStudentMapper(Student student);

    /**
     * 功能:根据id更新学员信息
     * @param student :学员id
     *
     */
    void updateStudentByIdMapper(Student student);

    /**
     * 功能:分页条件查询学员信息集合
     * @param studentStudentPageDto 请求参数(条件)
     * @return 返回的是查询到的数据集合
     */
    List<Student> pageQueryStudentListMapper(StudentPageDto studentStudentPageDto);
    /**
     * 功能:分页查询学员信息总条数
     * @param studentStudentPageDto 请求参数(条件)
     * @return 返回的是总条数
     */
    Integer pageQueryStudentTotalMapper(StudentPageDto studentStudentPageDto);

    @Update("update student set violation_count = violation_count + 1, violation_score = violation_score + #{score} where id=#{id}")
    void updateViolationMapper(Integer id, Integer score);

    List<Map<String, Integer>> queryCountGroupByClazz();
}
